// skin_progress.h
#ifndef _SKIN_PROGRESS_H
#define _SKIN_PORGRESS_H

#include "skin_base.h"
#include "skin_control.h"

// progress type
typedef enum SKIN_PROGRESS_TYPE
{
	PROGRESS_NORMAL 			= 0x0000,
	PROGRESS_TEXT_PERCENT		= 0x0001,
	PROGRESS_TEXT_TRANSPARENT	= 0x0002,
	PROGRESS_TEXT_LEFT			= 0x0004,
	PROGRESS_TEXT_RIGHT			= 0x0008,
	PROGRESS_TEXT_ENTER			= 0x0010,
	PROGRESS_TEXT_TOP			= 0x0020,
	PROGRESS_TEXT_BOTTOM		= 0x0040,
	PROGRESS_USE_IMAGE			= 0x0080,
	PROGRESS_HORIZONTAL			= 0x0100,
	PROGRESS_VERTICAL			= 0x0200,
	PROGRESS_REVERSE_HORIZONTAL	= 0x0400,
	PROGRESS_REVERSE_VERTICAL	= 0x0800,
} SKIN_PROGRESS_TYPE;

typedef struct SKIN_PROGRESS
{
	SKIN_CLIENT		client;
	int 			min;
	int 			max;
	int 			val;
	int 			progress_type;
	SDL_Color		fore_color;
	SDL_Color		back_color;
	SDL_Surface*	back_surface;
	SDL_Surface*	fore_surface;
	// caption
	SDL_Surface*	text_surface;
} SKIN_PROGRESS, *PSKIN_PROGRESS;

/**
	@name 		skin_progress_set_min
	@date		2013-05-23
	@author		pregene@gmail.com
	@brief		skin_progress_set_min() is to set minimal range.
	@return		skin_progress_set_min() return 1 or otherwize return 0 if couldn't set.
*/
int 	skin_progress_set_min(PSKIN_PROGRESS p, int min);
/**
	@name 		skin_progress_set_max
	@date		2013-05-23
	@author		pregene@gmail.com
	@brief		skin_progress_set_max() is to set maximal range.
	@return		skin_progress_set_max() return 1 or otherwize return 0 if couldn't set.
*/
int 	skin_progress_set_max(PSKIN_PROGRESS p, int max);
/**
	@name 		skin_progress_set_pos
	@date		2013-05-23
	@author		pregene@gmail.com
	@brief		skin_progress_set_pos() is to set a value between minimal and maximal range.
	@return		skin_progress_set_pos() return 1 or otherwize return 0 if couldn't set.
*/
int		skin_progress_set_pos(PSKIN_PROGRESS p, int val);

#endif // _SKIN_PROGRESS_H